Function Dichotomie(TexteAChch As String, limiteHaute As Long) As Long Dim m As Long, d As Long, f As Long Dichotomie = 0 d = 1 f = limiteHaute Do While d <= f m = (d + f) \ 2 If tablo(m).adresse = TexteAChch Then Dichotomie = m Exit Do Else If StrComp(TexteAChch, tablo(m).adresse, vbTextCompare) < 0 Then f = m - 1 Else d = m + 1 End If End If Loop End Function Sub QuickSort(début As Long, fin As Long) Dim i As Long, j As Long Dim milieu As String, temp As RECOR i = début j = fin milieu = tablo((i + j) \ 2).adresse Do While i <= j Do While StrComp(tablo(i).adresse, milieu, vbTextCompare) < 0 i = i + 1 Loop Do While StrComp(tablo(j).adresse, milieu, vbTextCompare) > 0 j = j - 1 Loop If i <= j Then temp = tablo(i) tablo(i) = tablo(j) tablo(j) = temp i = i + 1 j = j - 1 End If Loop If j > début Then QuickSort début, j End If If i < fin Then QuickSort i, fin End If End Sub Sub bullsort() Dim t As Double, f As Boolean Dim i As Integer, j As Integer For i = MAXNB To 2 Step -1 f = False For j = 1 To (i - 1) If Tablo(j) > Tablo(j + 1) Then t = Tablo(j) Tablo(j) = Tablo(j + 1) Tablo(j + 1) = t f = True End If Next j If f = False Then Exit For Next i End Sub Sub heapsift(d As Integer, f As Integer) Dim i As Integer, j As Integer, temp As Double i = d j = i * 2 temp = Tablo(i) Do While j <= f If j < f Then If Tablo(j) < Tablo(j + 1) Then j = j + 1 End If If temp >= Tablo(j) Then Exit Do Tablo(i) = Tablo(j) i = j j = i * 2 Loop Tablo(i) = temp End Sub Sub heapsort() Dim l As Integer, r As Integer, temp As Double r = MAXNB l = r \ 2 + 1 Do While l > 1 l = l - 1 heapsift l, r Loop Do While r > 1 temp = Tablo(1) Tablo(1) = Tablo(r) Tablo(r) = temp r = r - 1 heapsift l, r Loop End Sub Sub mergesort() Dim i As Integer, j As Integer, k As Integer Dim l As Integer, t As Integer Dim h As Integer, m As Integer, p As Integer Dim q As Integer, r As Integer, up As Integer ReDim nmbr(MAXNB * 2) As Double For i = 1 To MAXNB: nmbr(i) = Tablo(i): Next i up = True p = 1 Do h = 1: m = MAXNB If up = True Then i = 1: j = MAXNB: k = MAXNB + 1: l = MAXNB * 2 Else k = 1: l = MAXNB: i = MAXNB + 1: j = MAXNB * 2 End If Do If m >= p Then q = p Else q = m m = m - q If m >= p Then r = p Else r = m m = m - r Do While q <> 0 And r <> 0 If nmbr(i) < nmbr(j) Then nmbr(k) = nmbr(i) k = k + h i = i + 1 q = q - 1 Else nmbr(k) = nmbr(j) k = k + h j = j - 1 r = r - 1 End If Loop Do While r <> 0 nmbr(k) = nmbr(j) k = k + h j = j - 1 r = r - 1 Loop Do While q <> 0 nmbr(k) = nmbr(i) k = k + h i = i + 1 q = q - 1 Loop h = -h t = k k = l l = t Loop Until m = 0 up = Not up p = p * 2 Loop Until p >= MAXNB If up = False Then For i = 1 To MAXNB: Tablo(i) = nmbr(i + MAXNB): Next i Else For i = 1 To MAXNB: Tablo(i) = nmbr(i): Next i End If End Sub Sub shellsort() Dim i As Integer, j As Integer Dim temp As Double, gap As Integer gap = MAXNB \ 2 Do While gap > 0 i = gap Do While i < MAXNB j = i - gap Do While j >= 0 If Tablo(j + 1) > Tablo(j + 1 + gap) Then temp = Tablo(j + 1) Tablo(j + 1) = Tablo(j + 1 + gap) Tablo(j + 1 + gap) = temp End If j = j - gap Loop i = i + 1 Loop gap = gap \ 2 Loop End Sub Sub shlsrt() Dim t As Integer, m As Integer, h() As Integer Dim i As Integer, j As Integer, k As Integer Dim temp As Double t = Int(Log(MAXNB) / Log(3)) - 1 ReDim h(t) As Integer h(t) = 1 For m = (t - 1) To 1 Step -1 h(m) = 3 * h(m + 1) + 1 Next m For m = 1 To t k = h(m) ' s = -k For i = (k + 1) To MAXNB temp = Tablo(i) j = i - k ' If s = 0 Then s = -k ' s = s + 1 ' nombre(s) = temp Do While temp < Tablo(j) Tablo(j + k) = Tablo(j) j = j - k If j < 1 Then Exit Do Loop Tablo(j + k) = temp Next i Next m End Sub